package com.fanfanwang.ffw.app;

import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.fanfanwang.ffw.app.base.BaseFragment;
import com.fanfanwang.ffw.app.common.ToastAlone;
import com.fanfanwang.ffw.app.fragment.MainMyFragment;
import com.fanfanwang.ffw.app.fragment.MainServiceFragment;
import com.fanfanwang.ffw.app.fragment.MainTingcheFragment;
import com.fanfanwang.ffw.app.tools.SharedPreferencesUtil;
import com.fanfanwang.ffw.app.ui.login.LoginAct;
/**
 * 主的Fragment
 */
public class MainActivity extends FragmentActivity implements OnClickListener{
	public static int showFragmentid=0;//用来记录当前显示的fragment是第几个。0表示第一个，1表示第二个，2表示第三个。
	/**
	 * 用于展示停车的Fragment
	 */
	private MainTingcheFragment mainTingcheFragment;
	/**
	 * 用于展示服务的Fragment
	 */
	private MainServiceFragment mainServiceFragment;
	/**
	 * 用于展示我的的Fragment
	 */
	private MainMyFragment mainMyFragment;
	/**
	 * 停车界面布局
	 */
	private View mainTingcheLayout;
	/**
	 * 服务界面布局
	 */
	private View mainServiceLayout;
	/**
	 * 我的界面布局
	 */
	private View mainMyLayout;
	/**
	 * 在Tab布局上显示停车图标的控件
	 */
	private ImageView tingcheImage;
	/**
	 * 在Tab布局上显示服务图标的控件
	 */
	private ImageView serviceImage;
	/**
	 * 在Tab布局上显示我的图标的控件
	 */
	private ImageView myImage;
	/**
	 * 在Tab布局上显示停车标题的控件
	 */
	private TextView tingcheText;
	/**
	 * 在Tab布局上显示服务标题的控件
	 */
	private TextView serviceText;
	/**
	 * 在Tab布局上显示我的标题的控件
	 */
	private TextView myText;
	/**
	 * 用于对Fragment进行管理
	 */
	private FragmentManager fragmentManager;
	private int lastIndex = 0;


	//	protected SetFragment mFragment;
	//	public static SlidingMenu sm =null;

	public static MainActivity instance = null;
	private int preIndex=0;//上一次的fragment
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.gly_fragment_main);
		AppManager.getAppManager().addActivity(this);
		// 初始化布局元素
		//		Intent intent=getIntent();
		//		isNotify=intent.getBooleanExtra("isNotify", false);
		initViews();
		initData();
		startService();
	}


	/**
	 * 在这里获取到每个需要用到的控件的实例，并给它们我的好必要的点击事件。
	 */
	private void initViews() {
		mainTingcheLayout = findViewById(R.id.tingche_layout);
		mainServiceLayout = findViewById(R.id.service_layout);
		mainMyLayout =findViewById(R.id.my_layout);
		tingcheImage = (ImageView) findViewById(R.id.tingche_image);
		serviceImage = (ImageView)findViewById(R.id.service_image);
		myImage = (ImageView) findViewById(R.id.my_image);
		tingcheText = (TextView) findViewById(R.id.tingche_text);
		serviceText = (TextView) findViewById(R.id.service_text);
		myText = (TextView) findViewById(R.id.my_text);
		mainTingcheLayout.setOnClickListener(this);
		mainServiceLayout.setOnClickListener(this);
		mainMyLayout.setOnClickListener(this);
		fragmentManager = this.getSupportFragmentManager();
	}

	private void startService(){
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.tingche_layout:
			// 当点击了停车tab时，选中第1个tab
			if(lastIndex != 0){
				lastIndex = 0;
				setTabSelection(0);
			}
			break;
		case R.id.service_layout:
			// 当点击了服务tab时，选中第2个tab
			if(lastIndex != 1){
				setTabSelection(1);
				lastIndex = 1;
			}
			break;
		case R.id.my_layout:
			// 当点击了我的tab时，选中第4个tab
			if(TextUtils.isEmpty(SharedPreferencesUtil.getInstance(this).getUserId())){
				ToastAlone.showToast(this, "您还未登录，请登录", Toast.LENGTH_SHORT).show();
				//				AppManager.getAppManager().finishAllActivity();
				//需要启动到登录界面，然后重新进入，所以把值归位
				Intent intent=new Intent(this,LoginAct.class);
				startActivity(intent);
			}else{
				if(lastIndex != 2){
					setTabSelection(2);
					lastIndex = 2;
				}
			}
			break;
		default:
			break;
		}
	}

	/**
	 * 根据传入的index参数来我的选中的tab页。
	 * 
	 * @param index
	 *            每个tab页对应的下标。0表示停车，1表示服务，2表示动态，3表示我的。
	 */
	public void setTabSelection(int index) {
		// 每次选中之前先清楚掉上次的选中状态
		clearSelection();
		// 开启一个Fragment事务
		FragmentTransaction transaction = fragmentManager.beginTransaction();
		// 先隐藏掉所有的Fragment，以防止有多个Fragment显示在界面上的情况
		hideFragments(transaction);
		switch (index) {
		case 0:
			showFragmentid=0;
			// 当点击了停车tab时，改变控件的图片和文字颜色
			tingcheImage.setImageResource(R.drawable.tingche_select);
			tingcheText.setTextColor(getResources().getColor(R.color.green));
			//			if (tingcheFragment == null) {
			// 如果tingcheFragment为空，则创建一个并添加到界面上
			//				mainTingcheFragment = MainTingcheFragment.getTingcheFragment(this);
			//				transaction.add(R.id.content, tingcheFragment);
			if(!mainTingcheFragment.isAdded()){
				transaction.add(R.id.content, mainTingcheFragment);
				transaction.show(mainTingcheFragment);
			}else {
				transaction.show(mainTingcheFragment);
				transaction.hide(mainServiceFragment);
				transaction.hide(mainMyFragment);
				MainTingcheFragment.iGetSectionList.getLocation();
			}
			break;
		case 1:
			showFragmentid=1;
			// 当点击了服务tab时，改变控件的图片和文字颜色
			serviceImage.setImageResource(R.drawable.service_selected);
			serviceText.setTextColor(getResources().getColor(R.color.green));
			// 如果serviceFragment为空，则创建一个并添加到界面上
			//			mainServiceFragment=MainServiceFragment.getServiceFragment(this);
			if(!mainServiceFragment.isAdded()){
				transaction.add(R.id.content, mainServiceFragment);
				transaction.show(mainServiceFragment);
			}else {
				transaction.show(mainServiceFragment);
				transaction.hide(mainTingcheFragment);
				transaction.hide(mainMyFragment);
			}
			break;
		case 2:
			if(!TextUtils.isEmpty(SharedPreferencesUtil.getInstance(this).getUserId())){
				showFragmentid=2;
				// 当点击了动态tab时，改变控件的图片和文字颜色
				myImage.setImageResource(R.drawable.my_selected);
				myText.setTextColor(getResources().getColor(R.color.green));
				// 如果mainMyFragment为空，则创建一个并添加到界面上
				//			mainMyFragment = MainMyFragment.getMyFragment(this);
				if(!mainMyFragment.isAdded()){
					transaction.add(R.id.content, mainMyFragment);
					transaction.show(mainMyFragment);
				}else {
					transaction.show(mainMyFragment);
					transaction.hide(mainServiceFragment);
					transaction.hide(mainTingcheFragment);
				}
			}
			else{
				Intent intent=new Intent();
				intent.setClass(this, LoginAct.class);
				startActivity(intent);
			}

			break;
		default:
			break;
		}
		transaction.commit();
	}

	/**
	 * 清除掉所有的选中状态。
	 */
	private void clearSelection() {
		tingcheImage.setImageResource(R.drawable.tingche_unselected);
		tingcheText.setTextColor(Color.parseColor("#82858b"));
		serviceImage.setImageResource(R.drawable.service_unselected);
		serviceText.setTextColor(Color.parseColor("#82858b"));
		myImage.setImageResource(R.drawable.my_unselected);
		myText.setTextColor(Color.parseColor("#82858b"));
	}

	/**
	 * 将所有的Fragment都置为隐藏状态。
	 * 
	 * @param transaction
	 *            用于对Fragment执行操作的事务
	 */
	private void hideFragments(FragmentTransaction transaction) {
		if (mainTingcheFragment != null) {
			transaction.hide(mainTingcheFragment);
		}
		if (mainServiceFragment != null) {
			transaction.hide(mainServiceFragment);
		}
		if (mainMyFragment != null) {
			transaction.hide(mainMyFragment);
		}
	}

	public void initData() {
		// TODO Auto-generated method stub
		mainTingcheFragment = MainTingcheFragment.getTingcheFragment(this);
		mainServiceFragment=MainServiceFragment.getServiceFragment(this);
		mainMyFragment = MainMyFragment.getMyFragment(this);
		setTabSelection(0);
		startService();
	}

	public void setListener() {
		// TODO Auto-generated method stub

	}

	public static MainActivity newInstance() {
		// TODO Auto-generated method stub
		if(instance == null){
			instance = new MainActivity();
		}
		return instance;
	}
	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub

		//		super.onBackPressed();
		if(showFragmentid==preIndex)//如果这一次和上一次一样。那就直接调用exit。
		{
			exit();
		}else{
			preIndex=showFragmentid;
			AppContext.exitTime=0;
			exit();
			//			super.onBackPressed();
		}

	}
	public void exit() {
		if ((System.currentTimeMillis() - AppContext.exitTime) > 2000) {
			Toast.makeText(this, getString(R.string.repress_exit),
					Toast.LENGTH_SHORT).show();
			AppContext.exitTime = System.currentTimeMillis();
		} else {
			try {
				com.fanfanwang.ffw.app.AppManager.getAppManager().finishAllActivity();
				ActivityManager activityMgr = (ActivityManager)this
						.getSystemService(Context.ACTIVITY_SERVICE);
				activityMgr.killBackgroundProcesses(this.getPackageName());
				System.exit(0);
			} catch (Exception e) {
				System.exit(0);
			}
		}
	}
}
